import request from '@/utils/request'
import linq from 'linq';
//  async function get工作态度A1(部门, 年份) {
//   // let res = await request({
//   //   url: '/Performance',
//   //   method: 'get',
//   //   params: {
//   //     query: {
//   //       cate: '部门工作总结',
//   //       status: '通过',
//   //       年份: 年份,
//   //       部门: 部门
//   //     }
//   //   }
//   // });
//   // //
//   // var 领导工作态度A1 = res.data.length > 0 ?(res.data[0].评分记录.length>0?linq.from(res.data[0].评分记录).average("$.工作态度分数"):0):0;
//   // var list = [];
//   // res.data.forEach(e => {
//   //   list.push({ 类别: '领导工作态度赋分', 标题: e.标题, 分数: e.工作态度分数 });
//   // })
//   //
//   var list = [];
//   let res = await request({
//     url: '/Performance',
//     method: 'get',
//     params: {
//       query: {
//         cate: '工作态度A1',
//         status: '通过',
//         年份: 年份,
//         部门: 部门
//       }
//     }
//   });
//   //
//   let 部门工作态度A1 = linq.from(res.data).sum("$.分数");
//   res.data.forEach(e => {
//     list.push({ 类别: '党政办工作态度A1', 标题: e.标题, 分数: e.分数, model: e });
//   })
//   var s = Math.max(Math.min(部门工作态度A1, 100), 0);

//   return { list: list, sum: s.toFixed(2) }
// }
// async function get工作协调C1(部门, 年份) {
//   // let res = await request({
//   //   url: '/Performance',
//   //   method: 'get',
//   //   params: {
//   //     query: {
//   //       cate: '部门工作总结',
//   //       status: '通过',
//   //       年份: 年份,
//   //       部门: 部门
//   //     }
//   //   }
//   // });
//   // //
//   // var 领导工作协调C1 = res.data.length > 0 ? (res.data[0].评分记录.length>0?linq.from(res.data[0].评分记录).average("$.工作协调分数"):0) : 0;
//   // var list = [];
//   // res.data.forEach(e => {
//   //   list.push({ 类别: '领导工作协调赋分', 标题: e.标题, 分数: e.工作协调分数 });
//   // })
//   //
//   var list = [];
//   let res = await request({
//     url: '/Performance',
//     method: 'get',
//     params: {
//       query: {
//         cate: '工作协调C1',
//         status: '通过',
//         年份: 年份,
//         部门: 部门
//       }
//     }
//   });
//   //
//   let 部门工作协调C1 = linq.from(res.data).sum("$.分数");
//   res.data.forEach(e => {
//     list.push({ 类别: '党政办工作协调C1', 标题: e.标题, 分数: e.分数, model: e });
//   })

//  // let s = Math.max(Math.min( 部门工作协调C1, 6), 0);
//   var s = Math.max(Math.min(部门工作协调C1, 100), 0);

//   return { list: list, sum: s.toFixed(2) }
// }
async function get部门党建工作(college, 年份){
  let res = await request({
    url: '/Performance',
    method: 'get',
    params: {
      query: {
        cate: '部门党建工作',
        project: '基本工作绩效',
        status: '通过',
        年份: 年份,
        部门: college
      }
    }
  });
  var list = [];


  if (res.data.length > 0) {
   
    var sum = Math.max(Math.min(res.data[0].分数, 7), 0);

    list.push({ 类别: '部门党建工作', 标题: res.data[0].标题, 分数: sum, model: res.data[0] });
    return { list: list, sum: (sum).toFixed(2) }
  }
  else
    return { list: list, sum: 0 };
}
async function get代表性业绩(college, 年份){
  let res = await request({
    url: '/Performance',
    method: 'get',
    params: {
      query: {
        cate: '代表性业绩',
        status: '通过',
        年份: 年份,
        部门: college
      }
    }
  });
  var list = [];
  if (res.data.length > 0) {
    var sum = res.data[0]["分数"].toFixed(2);

    list.push({ 类别: '代表性业绩', 标题: res.data[0].标题, 分数: sum, model: res.data[0] });
    console.log(res.data)
    return { list: list, sum: sum }
  }
  else
    return { list: list, sum: 0 };
}

async function get改进性业绩(college, 年份){
  let res = await request({
    url: '/Performance',
    method: 'get',
    params: {
      query: {
        cate: '改进性业绩',
        status: '通过',
        年份: 年份,
        部门: college
      }
    }
  });
  var list = [];
  if (res.data.length > 0) {
    var sum = res.data[0]["分数"].toFixed(2);

    list.push({ 类别: '改进性业绩', 标题: res.data[0].标题, 分数: sum, model: res.data[0] });
    console.log(res.data)
    return { list: list, sum: sum }
  }
  else
    return { list: list, sum: 0 };
}

 async function getScore(cate, college, 年份) {
  let res = await request({
    url: '/Performance',
    method: 'get',
    params: {
      query: {
        cate: cate,
        年份: 年份,
        部门: college
      }
    }
  });
  var list = [];
  res.data.forEach(e => {
    list.push({ 标题: e.标题, 分数: e.分数, model: e });
  })
  let sum = linq.from(res.data).sum("$.分数");
  if (['工作态度A1','工作态度A2', '工作质量Q2', "工作质量Q3",'工作协调C1', "工作协调C2", "部门内控IC1"].indexOf(cate) !== -1) {
    sum = (sum*0.06).toFixed(2);
  }
  if (cate == '工作质量Q1') {
    sum = (sum*0.21).toFixed(2);
  }
  if (cate == '廉政违纪扣分In1') {
    sum = Math.max(sum, -15).toFixed(2);
  }
  if (cate == '行政事故扣分Ad1') {
    sum = Math.max(sum, -10).toFixed(2);
  }
  if (cate == '考勤违纪扣分At1') {
    sum = Math.max(sum, -5).toFixed(2);
  }
  return { list: list, sum: sum }
}
export  async function loadDep(college,年份) {
  const [工作态度A1, 工作态度A2, 工作质量Q1,
    工作质量Q2, 工作质量Q3, 工作协调C1, 工作协调C2, 部门内控IC1, 部门党建工作, 代表性业绩,改进性业绩,
    廉政违纪扣分In1, 行政事故扣分Ad1, 考勤违纪扣分At1
  ] = await Promise.all([
    getScore("工作态度A1", college, 年份),
    getScore("工作态度A2", college, 年份),
   getScore("工作质量Q1", college,年份),
    getScore("工作质量Q2", college, 年份),
    //
    getScore("工作质量Q3", college, 年份),
    getScore("工作协调C1", college, 年份),
    getScore("工作协调C2", college, 年份),

    getScore("部门内控IC1", college, 年份),

    get部门党建工作(college, 年份),

    get代表性业绩(college,年份),
    get改进性业绩(college,年份),
    getScore("廉政违纪扣分In1", college, 年份),
    getScore("行政事故扣分Ad1", college,年份),
    getScore("考勤违纪扣分At1", college, 年份),
  ]);
  
  return {
    部门: college, 年份: 年份, 工作态度A1: 工作态度A1,
    工作态度A2: 工作态度A2, 工作质量Q1: 工作质量Q1, 工作质量Q2: 工作质量Q2, 工作质量Q3: 工作质量Q3,
    工作协调C1: 工作协调C1, 工作协调C2: 工作协调C2, 部门内控IC1: 部门内控IC1, 部门党建工作: 部门党建工作, 代表性业绩: 代表性业绩,
    改进性业绩:改进性业绩,
    廉政违纪扣分In1: 廉政违纪扣分In1, 行政事故扣分Ad1: 行政事故扣分Ad1, 考勤违纪扣分At1: 考勤违纪扣分At1,
    总分:(parseFloat(工作态度A1.sum) + parseFloat(工作态度A2.sum) + parseFloat(工作质量Q1.sum) + parseFloat(工作质量Q2.sum) + parseFloat(工作质量Q3.sum) + parseFloat(工作协调C1.sum) + parseFloat(工作协调C2.sum) +
      parseFloat(部门内控IC1.sum) +
      parseFloat(部门党建工作.sum) + parseFloat(代表性业绩.sum)+parseFloat(改进性业绩.sum)+ parseFloat(廉政违纪扣分In1.sum) + parseFloat(行政事故扣分Ad1.sum) +
      parseFloat(考勤违纪扣分At1.sum)).toFixed(2)
  };
}